<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>v8引擎垃圾回收机制</title>
  </head>
  <body>
    <script>
            // 1.V8引擎采用自动内存管理机制，通过垃圾回收(GC)自动释放不再使用的内存。
            // 内存泄漏常见的场景
            // 1. 全局变量
            function foo() {
              bar = "全局变量"; // 未使用var/let/const
            }
            foo();
            console.log(bar); // 输出：全局变量 这段代码它不会进行垃圾回收，因为bar是全局变量，它会一直存在于内存中。

            // 2. 闭包
            function foo1() {
              var a = "999";
              return function () {
                console.log("a", a);
              };
            }
            const f = foo1();

            // 3.未清理的定时器
          //   const button = document.getElementById("myButton");
          //   button.addEventListener("click", onClick);
            // 不再需要时未removeEventListener

            /* let a = {};
            let b = {};

            b = [a];
            a = null;
            console.log(b); // [{}]
            垃圾回收机制
            只要数组中仍然持有对象1的引用，该对象就不会被 V8 的垃圾回收机制回收，因此 console.log(b) 会显示包含空对象的数组 */
    

            
    </script>
  </body>
</html>
